﻿/** 
 *   Depurador: Control de errores 
 *  
 *   @see Imagen Personaje Juego
 *   @author Eduardo Masia Roman
 */

/* --------------------------------------------------         
   Parte de Damas - EMR
   Versiones hasta la fecha:
   
   Num.   Fecha       Por / Cambios
   ---------------------------------------------------
   0.01  22-May-2009  Eduardo Masia Roman
                      Tomado de la version 0.12 de TheLastMision
    
 ---------------------------------------------------- */

using System;
using System.IO;

namespace Damas
{
  /// <summary>
  /// Description of Depurador.
  /// </summary>
  public static class Depurador
  {
    
    private static StreamWriter fichero;
    private static string nomFichero;
    
    public const byte DEPINFO = 0;
    public const byte DEPERROR = 1;
    public const byte DEPCREATE = 2;
    public const byte DEPDELETE = 3;
    
    private static bool depurar = true;                // Indica si registrar o no los datos.
    private static bool depurarAvisos = true;          // Indica si registrar o no los avisos.
    private static bool depurarCreate = true;          // Indica si registrar o no la creacion y destruccion de clases.
    private static bool borrarFichInicio = true;       // Borra el fichero al inicio del juego.
    
    
    static Depurador(){
      
      nomFichero = "Depurador.txt";
      borrarFich();
    }
    
    public static void Escribe(string texto){
      Escribe(texto, DEPINFO);
    }
    
    
    public static void Escribe(string texto, byte tipoAviso){
      string Aviso = "";
      
      if (!depurar)
        return;
      
      switch (tipoAviso){
        case DEPINFO:
          if (depurarAvisos){
            Aviso = "INFO";
          }else{
            return;
          }
          break;
        case DEPERROR:
          Aviso = "ERROR";
          break;
        case DEPCREATE:
          if (depurarCreate){
            Aviso = "CREATE";
          }else{
            return;
          }
          break;
        case DEPDELETE:
          if (depurarCreate){
            Aviso = "DELETE";
          }else{
            return;
          }
          break;
        default:
          Aviso = "Sin Esp (" + tipoAviso + ")";
          break;
      }
      
      try{
        fichero = File.AppendText(nomFichero);
      }
      catch(Exception){
        return;
      }
      
      fichero.WriteLine("{0} {1} - {2} - {3}",
                        DateTime.Now.ToShortDateString(),
                        DateTime.Now.ToShortTimeString(),
                        Aviso,
                        texto);
      
      
      fichero.Close();
    }
    
    
    private static void borrarFich(){
      if (borrarFichInicio)
        File.Delete(nomFichero);
    }
  }
}
